Week 15

Interface and Application Programming

  • Compare as many tool options as possible

Interface and Application Programming

May 01, 2024

For this week's group assignment, we are comparing three different interface tools.

Qt

Background

Qt is developed as free and open source software through the Qt Project, where both the community and developers of Nokia, Digia, and other companies participate. Previously, it was developed by the Qt software division of Nokia, which came into force after the acquisition by Nokia of the Norwegian company Trolltech, the original producer of Qt, on June 17, 2008. Qt is distributed under the terms of the GNU Lesser General Public License and others. On the other hand, Digia has been in charge of commercial licenses for Qt since March 2011.

Qt is used in KDE, a desktop environment for systems such as GNU/Linux or FreeBSD, among others.

Qt uses the C++ programming language natively.

Pros

Cons

Usage

When opening it for the first time, you will see this window.

In there, you can choose some of the templates on the first window and the screen size. In this case, we can use the default size to be adjustable later on.

On the left side, we can see different items we can drag into Canva:

On the top right side, we have the object inspector, every time we add an item, it will appear here.

On the button on the on the right side, we have the property editor, in case we need to manually change the layout, size, font, etc.

When you have an object on Canva, you can right-click on it and select Change StyleSheet. This will open a window where you can add CSS code for modifying it.

Processing

Background

Started by Ben Fry and Casey Reas in 2001

Created as a way of providing a way to code to non-coders, visual types

Software sketchbook

Pros

Cons

Usage

Download the software and install it, it works like arduino IDE where we have a setup function and a draw function which acts as a loop

In the setup we configure anything on the basic image drawing instruction, for example in the following image we have a basic 500 by 500 pixel screen with an ash gray background, this means that we create a program similar to c++ in object orient instructions

One more complicated example is shown below usign the example given by processing itself where we draw a circle and a square and create interaction with it by checking the mouse position

Here are a basic list of command to use in processing

App Inventor

Background

App Inventor for Android is an open-source web application originally provided by Google, and now maintained by the Massachusetts Institute of Technology (MIT), which allows newcomers to computer programming to create software applications for the Android operating system (OS).

Pros

Cons

Usage

AppInventor is divided into two main tabs: Designer and Blocks. The next image shows the designer part, where we can see four main parts: a palette that has components for the interface; a viewer to see the changes in real-time; a components panel with all the elements used, and a properties panel to modify the attributes of each element.

To use the designer part, we must drag and drop from the palette into the canvas. We can change the shape, color, and other properties in the properties tab.

In the designer tab, we have two main parts. The blocks have common programming instructions, and all the components are added through design. It uses an object-oriented programming system, which means each object used in the designer tab will have its own set of instructions.

To create a program, we must build it using blocks; each block has a way to be assembled, meaning there's no way to assemble it wrong. Therefore, the program will function correctly as long as all blocks are used properly.

FlutterFlow

Background

FlutterFlow is a web-based platform for building mobile applications that leverages Google's Flutter framework. It allows developers, especially those with little to no coding experience, to design, build, and deploy apps for both Android and iOS using a visual drag-and-drop interface.

Pros

Cons

Usage

To use flutterflow it's a similar concept as app inventor where we have a palette of objects to add, a canvas to place the objects and a properties windows

For example in the following image we dragged a button and text to add to my canvas.

A difference with app inventor is that we are given the code for the app instead of blocks which gives us a bit more flexibility as it's more native

Final Comparison

Feature Qt Processing App Inventor FlutterFlow
Primary Use Case Cross-platform high-performance applications Creative coding and educational projects Rapid Android app development for beginners Cross-platform mobile app development
Supported Platforms Windows, macOS, Linux, Android Windows, macOS, Linux Android Android, iOS
Programming Language C++ Java-like (Processing language) Visual drag-and-drop interface Visual drag-and-drop interface, Dart (Flutter)
Key Strengths - High performance
- Native look and feel
- Extensive libraries and tools
- Easy for non-programmers
- Great for visual projects
- Very intuitive
- Fast app development
- Easy and intuitive
- Rapid prototyping
- Firebase integration
Community & Support Large community, commercial support available Great community Supported by MIT Active community, subscription-based advanced features
Customization High (full control with C++) Moderate (visual and interactive focus) Low (limited to available components) Moderate to high (visual and custom code)
Pros - Cross-platform
- High performance
- Extensive support and libraries
- Free and open-source
- Good for visual types
- Easy and intuitive
- Quick development
- Cross-platform
- Real-time preview
- Firebase integration
Cons - Complex build process
- Requires C++ knowledge
- Startup time without commercial version
- Limited control over code
- Not great with system resources
- Limited to Android
- Cannot generate Java code
- Subscription-based for advanced features
- Dependent on FlutterFlow platform stability
Ideal For - Experienced developers
- High-performance apps
- Applications needing extensive library support
- Artists
- Educators
- Beginners in coding
- Beginners
- Educational projects
- Quick app prototypes
- Beginners to intermediate developers
- Rapid mobile app development